﻿
#include "zyAccelTable.h"


BlackMoonUI::zyAccelTable::zyAccelTable()
{
	m_obj->setDestroy(zyAccelTable_Destroy);
}
BlackMoonUI::zyAccelTable::~zyAccelTable()
{
	销毁();
}
void WINAPI BlackMoonUI::zyAccelTable::zyAccelTable_Destroy(resObject* obj)
{
	HACCEL acc = (HACCEL)obj->getDataValue();
	if (acc != NULL) {
		DestroyAcceleratorTable(acc);
	}
	zyRes::zyRes_Destroy(obj);
}
void BlackMoonUI::zyAccelTable::销毁() {//Destroy
	HACCEL hAcceleratorTable = (HACCEL)GetMember();
	if (hAcceleratorTable != 0) {
		DestroyAcceleratorTable(hAcceleratorTable);
		SetMember(0);
	}
}
HACCEL BlackMoonUI::zyAccelTable::取句柄() {
	return (HACCEL)GetMember();
}
void BlackMoonUI::zyAccelTable::置句柄(HACCEL acc) {
	销毁();
	SetMember((LONG_PTR)acc);
}
bool BlackMoonUI::zyAccelTable::创建(std::vector<ACCEL>& 参数_快捷键结构) {//CreateAcceleratorTable 成功返回真，失败返回假。
	销毁();
	HACCEL hAccel = CreateAcceleratorTable(参数_快捷键结构.data(), (int)参数_快捷键结构.size());
	SetMember((LONG_PTR)hAccel);
	return hAccel != 0;
}
bool BlackMoonUI::zyAccelTable::载入(int 参数_资源ID) {//LoadAccelerators 成功返回真，失败返回假。重rc资源中载入。
	销毁();
	HACCEL hAcceleratorTable = LoadAccelerators(zyEnv::getInstance().getHandle(), MAKEINTRESOURCE(参数_资源ID));
	SetMember((LONG_PTR)hAcceleratorTable);
	return hAcceleratorTable != 0;
}
BlackMoonUI::zyAccelTable BlackMoonUI::zyAccelTable::克隆() {//Copy
	std::vector<ACCEL> 局部_快捷键结构;
	zyAccelTable 局部_快捷键;
	HACCEL hAcceleratorTable = (HACCEL)GetMember();
	int 局部_数量 = CopyAcceleratorTable(hAcceleratorTable, 局部_快捷键结构.data(), 0);
	if (局部_数量 == 0)
		return 局部_快捷键;
	局部_快捷键结构.resize(局部_数量);
	if (CopyAcceleratorTable(hAcceleratorTable, 局部_快捷键结构.data(), (int)局部_快捷键结构.size()) == 0)
		return 局部_快捷键;
	局部_快捷键.创建(局部_快捷键结构);
	return 局部_快捷键;
}
int BlackMoonUI::zyAccelTable::取快捷键信息(std::vector<ACCEL>& 参数_快捷键信息) {//返回快捷键数量。
	HACCEL hAcceleratorTable = (HACCEL)GetMember();
	参数_快捷键信息.resize(0);
	int 局部_数量 = CopyAcceleratorTable(hAcceleratorTable, 参数_快捷键信息.data(), 0);
	if (局部_数量 == 0)
		return 0;
	参数_快捷键信息.resize(局部_数量);
	return CopyAcceleratorTable(hAcceleratorTable, 参数_快捷键信息.data(), (int)参数_快捷键信息.size());
}